package com.school.sports.service;

import com.school.sports.dto.LoginRequest;
import com.school.sports.dto.LoginResponse;

import java.util.Map;

/**
 * 认证服务接口
 */
public interface AuthService {

    /**
     * 用户登录
     *
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    LoginResponse login(LoginRequest loginRequest);

    /**
     * 用户登出
     *
     * @param token JWT令牌
     */
    void logout(String token);

    /**
     * 刷新令牌
     *
     * @param token 旧令牌
     * @return 新令牌
     */
    String refreshToken(String token);

    /**
     * 检查用户名是否已存在
     *
     * @param username 用户名
     * @return 是否存在
     */
    boolean checkUsernameExists(String username);

    /**
     * 用户注册
     *
     * @param registerData 注册数据
     */
    void register(Map<String, Object> registerData);

    /**
     * 验证安全问题
     *
     * @param verifyData 验证数据
     * @return 用户信息
     */
    Map<String, Object> verifySecurityQuestion(Map<String, Object> verifyData);

    /**
     * 重置密码
     *
     * @param resetData 重置数据
     */
    void resetPassword(Map<String, Object> resetData);
}